// Copyright 2000-2024 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.

package org.jetbrains.kotlin.idea.completion.test;

import com.intellij.testFramework.TestDataPath;
import org.jetbrains.kotlin.idea.base.plugin.KotlinPluginMode;
import org.jetbrains.kotlin.idea.base.test.TestRoot;
import org.jetbrains.kotlin.idea.test.JUnit3RunnerWithInners;
import org.jetbrains.kotlin.idea.test.KotlinTestUtils;
import org.jetbrains.kotlin.test.TestMetadata;
import org.junit.runner.RunWith;

/**
 * This class is generated by {@link org.jetbrains.kotlin.testGenerator.generator.TestGenerator}.
 * DO NOT MODIFY MANUALLY.
 */
@SuppressWarnings("all")
@TestRoot("completion/tests-k1")
@TestDataPath("$CONTENT_ROOT")
@RunWith(JUnit3RunnerWithInners.class)
@TestMetadata("../testData/incrementalResolve")
public abstract class K1CompletionIncrementalResolveTestGenerated extends AbstractK1CompletionIncrementalResolveTest {
    @RunWith(JUnit3RunnerWithInners.class)
    @TestMetadata("../testData/incrementalResolve/basic")
    public abstract static class Basic extends AbstractK1CompletionIncrementalResolveTest {
        @RunWith(JUnit3RunnerWithInners.class)
        @TestMetadata("../testData/incrementalResolve/basic/localChange")
        public static class LocalChange extends AbstractK1CompletionIncrementalResolveTest {
            @java.lang.Override
            @org.jetbrains.annotations.NotNull
            public final KotlinPluginMode getPluginMode() {
                return KotlinPluginMode.K1;
            }

            private void runTest(String testDataFilePath) throws Exception {
                KotlinTestUtils.runTest(this::doTest, this, testDataFilePath);
            }

            @TestMetadata("addVariable_beforeCaret.kt")
            public void testAddVariable_beforeCaret() throws Exception {
                runTest("../testData/incrementalResolve/basic/localChange/addVariable_beforeCaret.kt");
            }

            @TestMetadata("changeVariable_beforeCaret.kt")
            public void testChangeVariable_beforeCaret() throws Exception {
                runTest("../testData/incrementalResolve/basic/localChange/changeVariable_beforeCaret.kt");
            }

            @TestMetadata("deleteVariable_beforeCaret.kt")
            public void testDeleteVariable_beforeCaret() throws Exception {
                runTest("../testData/incrementalResolve/basic/localChange/deleteVariable_beforeCaret.kt");
            }
        }

        @RunWith(JUnit3RunnerWithInners.class)
        @TestMetadata("../testData/incrementalResolve/basic")
        public static class Uncategorized extends AbstractK1CompletionIncrementalResolveTest {
            @java.lang.Override
            @org.jetbrains.annotations.NotNull
            public final KotlinPluginMode getPluginMode() {
                return KotlinPluginMode.K1;
            }

            private void runTest(String testDataFilePath) throws Exception {
                KotlinTestUtils.runTest(this::doTest, this, testDataFilePath);
            }

            @TestMetadata("functionWithExpressionBody.kt")
            public void testFunctionWithExpressionBody() throws Exception {
                runTest("../testData/incrementalResolve/basic/functionWithExpressionBody.kt");
            }

            @TestMetadata("functionWithExpressionBody_implicitType.kt")
            public void testFunctionWithExpressionBody_implicitType() throws Exception {
                runTest("../testData/incrementalResolve/basic/functionWithExpressionBody_implicitType.kt");
            }

            @TestMetadata("localAnonymousFunctionWithExpressionBody.kt")
            public void testLocalAnonymousFunctionWithExpressionBody() throws Exception {
                runTest("../testData/incrementalResolve/basic/localAnonymousFunctionWithExpressionBody.kt");
            }

            @TestMetadata("noDataFlowFromOldStatement.kt")
            public void testNoDataFlowFromOldStatement() throws Exception {
                runTest("../testData/incrementalResolve/basic/noDataFlowFromOldStatement.kt");
            }

            @TestMetadata("propertyWithInitializer.kt")
            public void testPropertyWithInitializer() throws Exception {
                runTest("../testData/incrementalResolve/basic/propertyWithInitializer.kt");
            }
        }
    }

    @RunWith(JUnit3RunnerWithInners.class)
    @TestMetadata("../testData/incrementalResolve/smart")
    public static class Smart extends AbstractK1CompletionIncrementalResolveTest {
        @java.lang.Override
        @org.jetbrains.annotations.NotNull
        public final KotlinPluginMode getPluginMode() {
            return KotlinPluginMode.K1;
        }

        private void runTest(String testDataFilePath) throws Exception {
            KotlinTestUtils.runTest(this::doTest, this, testDataFilePath);
        }

        @TestMetadata("codeAboveChanged.kt")
        public void testCodeAboveChanged() throws Exception {
            runTest("../testData/incrementalResolve/smart/codeAboveChanged.kt");
        }

        @TestMetadata("codeAboveChanged2.kt")
        public void testCodeAboveChanged2() throws Exception {
            runTest("../testData/incrementalResolve/smart/codeAboveChanged2.kt");
        }

        @TestMetadata("dataFlowInfoFromPrevStatement.kt")
        public void testDataFlowInfoFromPrevStatement() throws Exception {
            runTest("../testData/incrementalResolve/smart/dataFlowInfoFromPrevStatement.kt");
        }

        @TestMetadata("dataFlowInfoFromSameStatement.kt")
        public void testDataFlowInfoFromSameStatement() throws Exception {
            runTest("../testData/incrementalResolve/smart/dataFlowInfoFromSameStatement.kt");
        }

        @TestMetadata("doNotAnalyzeComplexStatement.kt")
        public void testDoNotAnalyzeComplexStatement() throws Exception {
            runTest("../testData/incrementalResolve/smart/doNotAnalyzeComplexStatement.kt");
        }

        @TestMetadata("noPrevStatement.kt")
        public void testNoPrevStatement() throws Exception {
            runTest("../testData/incrementalResolve/smart/noPrevStatement.kt");
        }

        @TestMetadata("outOfBlockModification.kt")
        public void testOutOfBlockModification() throws Exception {
            runTest("../testData/incrementalResolve/smart/outOfBlockModification.kt");
        }

        @TestMetadata("prevStatementNotResolved.kt")
        public void testPrevStatementNotResolved() throws Exception {
            runTest("../testData/incrementalResolve/smart/prevStatementNotResolved.kt");
        }

        @TestMetadata("sameStatement.kt")
        public void testSameStatement() throws Exception {
            runTest("../testData/incrementalResolve/smart/sameStatement.kt");
        }
    }
}
